package redisCluster

import (
	"github.com/go-redis/redis"
)

var DefaultRedisClusterClient *redis.ClusterClient

type RedisClusterConfig struct {
	Debug     bool     `json:"debug" yaml:"debug"`
	RedisURLs []string `json:"redis_urls" yaml:"redis_urls"`
	PassWord  string   `json:"pass_word" yaml:"pass_word"`
}

// Init 初始化 redis cluster client
func Init(conf RedisClusterConfig) {
	Debug = conf.Debug
	DefaultRedisClusterClient = redis.NewClusterClient(&redis.ClusterOptions{
		Addrs:    conf.RedisURLs,
		Password: conf.PassWord,
		// PoolSize:     0,  不要配置 4*runtime.NumCPU
		// DialTimeout:  0,  不要配置 5s
		// ReadTimeout:  0,  不要配置 3s
		// WriteTimeout: 0,  不要配置 3s
		// IdleTimeout:  0,  不要配置 5*time.Minute
		// IdleCheckFrequency: 0,  不要配置 60*time.Second
		// MaxConnAge:  0,  不要配置 存活最长时间
	})
	if err := DefaultRedisClusterClient.Ping().Err(); err != nil {
		panic(err)
	}

}

func GetDefaultRedisClusterClient() *redis.ClusterClient {
	return DefaultRedisClusterClient
}
